Given an unsorted array of integers, find the length of longest increasing subsequence.
For example,
Given[10, 9, 2, 5, 3, 7, 101, 18]
,
The longest increasing subsequence is[2, 3, 7, 101]
, therefore the length is4
. Note that there may be more than one LIS combination, it is only necessary for you to return the length.
Your algorithm should run in O(n2) complexity.
Follow up:Could you improve it to O(nlogn) time complexity?
Credits:
Special thanks to@pbrotherfor adding this problem and creating all test cases.
class Solution {
public:
int lengthOfLIS\(vector<int>& nums\) {
if \(nums.size\(\)==0\)
return 0;
int result\[nums.size\(\)\];
int maxnumber=0;
for \(int i=0;i<nums.size\(\);i++\){
result\[i\]=1;
for\(int j=0;j<i;j++\){
if \(\(nums\[j\]<nums\[i\]\)&&\(result\[i\]<\(result\[j\]+1\)\)\){
result\[i\]=result\[j\]+1;
}
}
maxnumber=max\(maxnumber,result\[i\]\);
}
return maxnumber;
}
};